home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 42
/
Amiga Format AFCD42 (Issue 126, Aug 1999).iso
/
-serious-
/
programming
/
other
/
wild
/
appunti
/
fileformat.txt
< prev
next >
Wrap
Text File
|
1999-05-25
|
2KB
|
85 lines
DESIGN DEL FORMATO FILES DI WILD.
Intanto: WILD carica delle Scenes, con dentro tutto l'occorrente.
Poi: il primo formato che uso (forse anche l'unico) sarà un tipo simile all'IFF.
Ci dovrà essere un chunk che definisce la struttura della scene,
e poi tutti chunks descriveranno il resto.
Dovrà essere splittabile in più files.
Mi serve un concetto di chunks figli.
esempio:
ROOT
SCENE
ARENA
ALIEN
SECTOR
NEBULA
WIRE
SHELL
SECTOR
NEBULA
WIRE
SHELL
ALIEN
SECTOR
...
ARENA
...
EOF
Struttura Chunk:
KEY.l
SIZE.l (including childs, so ROOT will have size=FILESIZE-chunkheader)
DATA.l (size of data in the chunky before the first child chunk)
CHILDS.l (number of childs of this chunk)
Chunks: (indicated by keys)
WILD The header chunk, also file identifier
LINK Special chunk !!!
In the data you will have a relative filename.
It will be inserted here like if it was a single file.
Nuovi concetti, 28/4/1999, un sacco di tempo dopo...
Serve un formato molto più veloce del wabl (in loading soprattutto) e binario.
Control header:
- dc.w command
Commands:
NEW_BROTHEROBJECT
NEW_CHILDOBJECT
Object header:
- dc.l ObjectType
- dc.l ObjectID
(objectType = 0 is EOF)
Then, must be the attributes (NOT friends, just attributes, simple & complex).
- dc.l AttributeID
- dc.l AttributePTR (offset into the DATA bank)
- dc.l AttributeLEN (len into the DATA bank)
(attributeID = 0 is end of attributes)
The ending attribute is only a 0, not (0,0,0) !
Then, must be the friends.
- dc.l FriendID
- dc.l FriendPTR (offset from there (the longword next to this) to object referred)
code to extract a friend: *a0=friend
move.l (a0)+,d0 ; d0=FriendID
movea.l (a0)+,a1
adda.l a0,a1 ; a1=FriendPTR
Dovrebbe anche supportare XPK.
Il loader si può scrivere in asm, ma in saver in c...